package com.ingweb.inventarius.dao;

import java.util.List;

import com.ingweb.inventarius.model.Producto;

/***
 * 
 * 
 * Interfaz de acceso a datos de la tabla Producto
 *
 */
public interface DAOProducto {

	/**
	 * Metodo que obtiene el listado de productos que se encuentran actualmente
	 * en la base de datos.
	 * 
	 * @return Listado de entidades Producto encontradas
	 */
	public List<Producto> obtenerProductos();

	/**
	 * Metodo que devuelve un producto a partir de su ID
	 * 
	 * @param codigo
	 *            Valor entero que identifica el producto
	 * @return Instancia de Producto
	 */
	public Producto obtenerProducto(int codigo);

	/**
	 * Metodo que permite persistir un Producto en la base de datos
	 * 
	 * @param producto
	 *            Instancia del Producto a persistir
	 */
	public void guardarProducto(Producto producto);

	/**
	 * Metodo que permite eliminar un Producto en la base de datos
	 * 
	 * @param producto
	 *            Instancia del Producto a eliminar
	 */
	public void eliminarProducto(Producto producto);

	/**
	 * Metodo que permite persistir un Poducto ya existente en la base de datos
	 * 
	 * @param producto
	 *            Instancia del Producto a persistir
	 */
	public void editarProducto(Producto producto);

	/**
	 * Metodo que permite realizar una busqueda de un producto a partir de una
	 * palabra clave en su atributo nombre
	 * 
	 * @param cadena
	 *            Keyword para realizar la busqueda
	 * @return Listado de entidades de tipo Prodcutoque coinciden con el string
	 *         de busqueda
	 */
	public List<Producto> buscarProducto(String cadena);
}
